package br.com.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Escritor {
	public static final int OK 				= 0;
	public static final int IO_EXCEPTION 	= 1;
	public static final int VALOR_NULO 		= 2;
	public static final int FILE_NOT_FOUND 	= 3;
	
	FileWriter 	escritor;
	File 		arquivo;
	int 		erro;
	
	public Escritor() {
		escritor 	= null;
		arquivo 	= null;
		erro 		= OK;
	}
	
	public int getUltimoErro() {
		return erro;
	}
	
	public boolean abreArquivo(String caminho, boolean criarArquivo) {
		arquivo = new File(caminho);
		
		if ((!arquivo.exists()) && (criarArquivo)) {
			try {
				arquivo.createNewFile();
			} catch (IOException e) {
				escritor = null;
				erro = IO_EXCEPTION;
				return false;
			}
		}
		
		if (arquivo.exists()) {
			try {
				escritor = new FileWriter(arquivo, false);
			} catch (IOException e) {
				escritor = null;
				erro = IO_EXCEPTION;
				return false;
			}
		} else {
			erro = FILE_NOT_FOUND;
			return false;
		}
		
		erro = OK;
		return true;
	}
	
	public boolean fechaArquivo() {
		if (escritor!=null) {
			try {
				escritor.close();
				erro = OK;
				return true;
			} catch (IOException e) {
				erro = IO_EXCEPTION;
				return false;
			}
		} else {
			erro = OK;
			return false;
		}
	}
	
	public boolean gravaArquivo(String[] frases) {
		if (frases == null) {
			erro = VALOR_NULO;
			return false;
		}
		
		try {
			for (String s : frases) {
				escritor.write(s+'\n');
			}
		} catch (IOException e) {
			erro = IO_EXCEPTION;
			return false;
		}
		
		erro = OK;
		return true;
	}
}
